package com.rory.dao;

import org.springframework.cache.annotation.Cacheable;

import java.util.List;

/**
 * File: CrudDao.
 * Created by Rory on 2016/11/15.
 */
public interface CrudDao<T> extends BaseDao{

    /**
     * 根据ID删除
     * @param id ID
     * @return 返回结果
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * 新增
     * @param record 对象
     * @return 返回结果
     */
    int insert(T record);

    /**
     * 新增
     * @param record 对象
     * @return 返回结果
     */
    int insertSelective(T record);

    /**
     * 根据ID查询
     * @param id ID
     * @return 返回结果
     */
    @Cacheable(value="ObjCache",key="'getObjByKey'+#id")
    T selectByPrimaryKey(Integer id);

    /**
     * 根据对象信息查询
     * @param record 对象
     * @return 返回结果
     */
    List<T> selectByPrimarys(T record);

    /**
     * 修改
     * @param record 对象
     * @return 返回结果
     */
    int updateByPrimaryKeySelective(T record);

    /**
     * 修改
     * @param record 对象
     * @return 返回结果
     */
    int updateByPrimaryKeyWithBLOBs(T record);

    /**
     * 修改
     * @param record 对象
     * @return 返回结果
     */
    int updateByPrimaryKey(T record);
}
